package com.cater.sys.service;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.cater.query.CommonQuery;
import com.cater.sys.dao.RoleDao;
import com.cater.sys.entity.Role;
import com.cater.sys.entity.RoleUR;


/**
 * @author sd
 *角色管理
 */
@Service("RoleService")
public class RoleService {
	
	@Autowired
	private RoleDao roleDao;
	
	/**
	 * 获得全部角色信息
	 * @return
	 */
	public List<Role> getAll(){
		return roleDao.getAll();
	}
	
	public List<Role> getAllCommon(CommonQuery query){
		return roleDao.getAllCommon(query);
	}

	/**
	 * 根据Id获得角色信息
	 * @return
	 */
	public Role getbyid(Integer id){
		return roleDao.getById(id);
	}
	
	/**
	 * roleId删除所有资源权限
	 * @param roleId
	 */
	public void removeRR(Integer roleId){
		roleDao.removeRR(roleId);
	}
	
	/**
	 * 添加资源权限
	 * @param roleId
	 * @param resourceId
	 */
	public void saveRR(Integer roleId,Integer resourceId){
		roleDao.saveRR(roleId, resourceId);
	}
	
	/**
	 * 添加角色
	 * @param roleId
	 * @param resourceId
	 */
	public void save(Role role){
		roleDao.save(role);
	}
	
	
	/**
	 * 修改角色
	 * @param role
	 */
	public void update(Role role){
		roleDao.update(role);
	}
	
	
	/**
	 * 删除角色
	 * @param roleId
	 */
	public void delete(Integer roleId){
		roleDao.delete(roleId);
	}
	
	/**
	 * 删除角色状态
	 * @param roleId
	 */
	public void deletestate(Role role){
		roleDao.deletestate(role);
	}
	
	public List<Role> getByuId(Integer userId){
		return roleDao.getByUserId(userId);
	};
	
	public List<RoleUR> getByUserId(Integer userId,CommonQuery query){
		List<Role> allRoles =roleDao.getAllCommon(query);
		List<Role> roles = roleDao.getByUserId(userId);
		List<RoleUR> roleVos = new ArrayList<RoleUR>();
		for (Role role : allRoles) {
			RoleUR roleVo = new RoleUR();
			roleVo.setRole(role);
			for (Role role2 : roles) {
				if (role2.getId().equals(role.getId())) {
					roleVo.setSelected("selected");
					break;
				}
			}
			roleVos.add(roleVo);
		}
		return roleVos;
	};
}
